package com.example.developdemo.controller;

import com.example.developdemo.dto.Result;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@CrossOrigin
@RestController
public class FileController {
    /**
     * 文件上传
     */
    @PostMapping(value = "/uploadFile")
    public Result uploadFile(MultipartFile file, HttpServletRequest request) throws IOException {

        /*
        * 测试文件上传是否可用？
        * System.out.println(file.getOriginalFilename());
        */

        //---------------------------------------------------------------------------------
        //获取文件名称
        String fileName= file.getOriginalFilename();
        //获取文件格式
        String sub = fileName.substring(fileName.lastIndexOf("."), fileName.length());

        //重新命名
        String newFileName = UUID.randomUUID().toString();

        //新拼接的文件名
        fileName = newFileName + sub;
        //----------------------------------------

        //存图片
        //获取项目运行时候的真实地址
        String realPath =request.getServletContext().getRealPath("/pic");

        //对地址进行抽象化  --- 将路径字符串转换为一个具有操作文件系统功能的对象的过程。
        File f =new File(realPath);

        //判断地址是否存在  - 真实地址
        if(!f.exists()){
            f.mkdirs();
        }

        //将图片保存到此地址
        file.transferTo(new File(f+"/"+fileName));

        //将 服务器地址  返回给前端
        String bookUrl = "/pic/"+fileName;
        System.out.println("bookUrl:"+bookUrl);

        //数据库在   本地的真实地址
        String bookAddress = f+"/"+fileName;
        System.out.println(bookAddress);

        //将数据传到前端
        Map<String,String> map =new HashMap<>();
        map.put("bookUrl",bookUrl);
        map.put("bookAddress",bookAddress);

        return Result.ok(map);
    }

}
